<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html>
<head>
    <link rel="Stylesheet" type="text/css" href="../style.css" />
    <title>OpenSSL和国密算法</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="pragma" content="no-cache" />

    <script type="text/javascript" src="../js/sh_main.min.js"></script>
    <link type="text/css" rel="stylesheet" href="../css/sh_vim.min.css" />

    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
</head>
<body onload="sh_highlightDocument('../js/lang/', '.min.js');">
    <div align="center" 
            style="z-index:100; width:100%; top:5px; position:fixed;">
        <code style="background-color:#e0e0e0">
            <strong>
            <a href="../index.html">回主页</a>
            <a href="../diary/diary.html">我的日志</a>
            <!-- <a href="mailto:jzgnh@foxmail.com">联系我</a> -->
            </strong>
        </code>
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
        &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
    </div>
    <div class="content">
    



<h2 id="toc_0.1"><code>OpenSSL</code>和<code>国密算法</code></h2>

<p>
国密算法是<a href="https://www.oscca.gov.cn">国家密码管理局</a>发布的<code>SM</code>系列算法，
本系列主要介绍<a href="https://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002386.shtml">SM2</a>算法的签名操作，
以及在签名过程中使用的<a href="https://www.oscca.gov.cn/sca/xxgk/2010-12/17/content_1002389.shtml">SM3</a>摘要算法。
</p>

<p>
国密算法的推广已经很多年了，在各个方面都已经应用了起来，
尤其在金融方面（包括金融卡及网上银行）使用的已经很广泛了。
</p>

<p>
前些年在做国密算法相关开发时，为了能跟原有的<code>RSA</code>算法相关的代码复用，
我曾将国密算法添加到了<code>OpenSSL</code>(版本应该为<code>0.9.8</code>)中，
这样在进行有关签名、证书等操作时原有的<code>RSA</code>代码可以直接拿来复用，
除了需要处理<code>SM2</code>算法的<code>Z</code>值计算外，其他代码基本上直接拿过来就可以使用。
现在<code>OpenSSL</code>已经在<code>1.1.1</code>版本中增加了<code>SM2/3/4</code>的实现，
且<code>0.9.8</code>版的<code>OpenSSL</code>现在（<code>2020</code>年末）也过于古老了，
所以我就在这几篇文章中着重介绍一下最新<code>OpenSSL 1.1.1i</code>中国密算法到底该如何使用。
</p>

<p>
此小系列文章主要分为：
</p>
<ol>
<li class="done2">
<a href="../diary/2020-12-27.html">OpenSSL如何支持SM2算法</a>

<li class="done0">
如何将<code>SM2</code>算法的完善支持添加到<code>OpenSSL</code>中

<li class="done0">
如何使用硬件设备（<code>USB Key</code>)等支持<code>OpenSSL</code>调用

<li class="done0">
低于<code>OpenSSL 1.1.1</code>版本的环境如何使用<code>SM2</code>算法

</ol>

    </div>
    
<hr/>
<div align="center" style="width:100%; top:5px">
<span>©2020-2021 扯淡老焦</span>
</div>

</body>
</html>
